import {DialogForm} from 'custom/index'
import {
    getShopList,
    addCustomerSubAccount,
    updateCustomerSubAccount,
    addChildCustomerSubAccount,
    getShopDistributeRuleList,
    distributeCusSer,
    distributeCompany
} from './api'
import SubAccountList from './components/SubAccountList.vue'
import {inputMethodOptions} from './constant'
import HalfInput from './components/HalfInput.vue'
import ExNameItem from './components/ExNameItem.vue'
import UserIdItem from './components/UserIdItem.vue'

const addDialog = new DialogForm('DialogForm')

addDialog
    .title('新增')
    .postApi(addCustomerSubAccount)
    .useGroup('基础信息')
    .useApiSelect('shopId', getShopList).label('店铺').required().end()
    .useCustomItem(SubAccountList, 'subAccountList').setDefault([]).end()

const addAccountDialog = new DialogForm('DialogForm')
addAccountDialog
    .title('添加子账号')
    .useGroup('')
    .useItem('accountNo').label('数据账号').required().end()
    .useItem('accountName').label('子账号名称').required().end()
    .useItem('accountPassword').label('子账号密码').required().end()
    .useSelect('inputType', inputMethodOptions).label('录入方式').required().end()

const addSubAccountDialog = new DialogForm('DialogForm')
addSubAccountDialog
    .title('添加子账号')
    .getApi(async (_, row) => ({shopId: row.shopId}))
    .postApi(addChildCustomerSubAccount)
    .useGroup('')
    .useItem('accountNo').label('数据账号').required().end()
    .useItem('accountName').label('子账号名称').required().end()
    .useItem('accountPassword').label('子账号密码').required().end()
    .useSelect('inputType', inputMethodOptions).label('录入方式').required().end()

const editAccountDialog = new DialogForm('DialogForm')
editAccountDialog
    .title('编辑子账号')
    .getApi(async (_, row) => ({
        subAccountId: row.subAccountId,
        accountName: row.accountName,
        accountPassword: row.accountPassword,
        accountNo: row.accountNo,
        inputType: row.inputType
    }))
    .postApi(updateCustomerSubAccount)
    .useGroup('')
    .useItem('accountNo').label('数据账号').required().end()
    .useItem('accountName').label('子账号名称').required().end()
    .useItem('accountPassword').label('子账号密码').required().end()
    .useSelect('inputType', inputMethodOptions).label('录入方式').required().end()

const dispatchAccountDialog = new DialogForm('DialogForm')
dispatchAccountDialog
    .title('分配客服')
    .getApi(async (_, row) => ({
        subAccountId: row.subAccountId,
        accountName: row.accountName,
        shopName: row.shopName,
        baseSalary: row.baseSalary
    }))
    .postApi(distributeCusSer)
    .useGroup()
    .useItem('shopName').label('所属店铺').setProp('disabled', true).end()
    .useItem('accountName').label('子账号名称').setProp('disabled', true).end()
    // .useItem('allocationRuleId').label('分配规则').required().end()
    .useApiSelect('allocationRuleId', getShopDistributeRuleList).label('分配规则').required().end()
    // .useDictSelect('exName', 'exName').label('分部公司').setProp('widthLabel', 'exNameLabel').required().end()
    .useCustomItem(ExNameItem, 'companyNo').label('分部公司').required().end()
    // .useApiSelect('userId', getCusSerListList).label('选择客服').required().end()
    .useCustomItem(UserIdItem, 'userId').label('选择客服').required().end()
    .useDatePicker('startDate').label('开始日期').required().end()
    .useDatePicker('endDate').label('截止日期').end()
    .useItem('baseSalary').label('总底薪').setProp('disabled', true).end()
    // .useItem('conventionSalary').label('约定分摊底薪').required().end()
    .useCustomItem(HalfInput, 'conventionSalary').label('约定分摊底薪(元)').required().end()
    .useItem('commissionRatio').label('提成比例').end()
// .useSelect('sendSmsSign', sendSmsSignOptions).label('短信提醒').required().end()

const dispatchCompanyDialog = new DialogForm('DialogForm')
dispatchCompanyDialog
    .title('分配公司')
    .getApi(async (_, row) => ({subAccountId: row.subAccountId}))
    .postApi(distributeCompany)
    .useGroup()
    .useDictSelect('companyNo', 'company').setProp('widthLabel', 'companyName').label('公司').required().end()
    .useItem('companytBaseSalary').label('总公司分配底薪').required().end()

export {
    addDialog,
    addAccountDialog,
    editAccountDialog,
    dispatchAccountDialog,
    addSubAccountDialog,
    dispatchCompanyDialog
}
